This invention relates to the field of computer systems. More particularly, a system and methods are provided for identifying device-specific properties of a device within a computer system.
Many computer systems are equipped to receive interface cards or boards for enhancing the capability of the systems. An interface card may include one or more devices, such as an Ethernet device for interfacing with a network, a USB (Universal Serial Bus) for interfacing with peripheral equipment, and so on.
Interface cards are often configured to connect to a local communication bus within a computer system. For example, the PCI (Peripheral Computer Interconnect) architecture provides a standard format for interconnecting interface cards with a computer system via one or more PCI buses.
In the PCI architecture and other architectures, an interface card will generally be programmed or equipped with properties that may be associated with the card (e.g., a manufacturer identifier, a card version), and a special FCode program for retrieving them. The FCode program and card properties may be stored in a Programmable Read-Only Memory (PROM), expansion ROM, or other non-volatile form of memory.
During initialization (e.g., booting) of the computer system, the FCode program is retrieved and executed, and the card's properties are read and associated with the card to facilitate operation of the card. However, not every computer system is equipped with the FCode interpreter and, even if a computer system includes the FCode interpreter, it may be configured to only run during system boot. The interpreter would not run, therefore, if one interface card is hot-swapped with another, and the replacement card's properties would not be obtained.
One reason the FCode interpreter is needed to access the properties is the form in which the properties are stored. For example, the PCI specification requires properties to be stored in a cryptic form. Specifically, the data structure only provides for three fields for a property: name, length and value. The name field is limited to two or three characters in size, which means that the card properties stored on the card must be identified by cryptic codes that are too small to provide a meaningful indication of the nature of the properties.
Further, the format of the data structure in which the properties are stored does not provide for the association of a specific property with a specific device on the card. For example, if an interface card includes more than one device of a particular type or nature (e.g., two Ethernet devices), the data structure cannot associate a particular property (e.g., type of Ethernet media, network address) with a specific device.